perm filename SUBRZ.F4[RST,LCS] blob sn#223777 filedate 1976-07-07 generic text, type T, neo UTF8
00300		SUBROUTINE SUBR
00400		COMMON /INS/ INST(27),BG(60)
00500		COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
00600	C   INUM=INST#  IPAR=PARAM#  
00700	C   BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
00800	C   IF IREST IS <0, THAT NOTE WILL BE A REST.  
00900	C   INST=INST. NAME,  BG=INSTS' BEGIN TIMES.
01000	C   NOTE #S IN SUBROUTINE: (1-84)  C4=37  FS4=43  C5=49  ETC.
01100	C   F1=86  F15=100 (NO F16!)
01200	
01300		DIMENSION JINST(4,4),A(4),L(4)
01400	C  WILL ACCEPT 4 INST NAMES FOR EACH OF 4 INSTS( 1,2,3,4)
01500		IF(IPAR.EQ.30)GO TO 30
01600	C DOES NAME CHANGE ON P30 CALL
01700	
01800	C   CALL SUBROUTINE FROM P12. P3 CAN BE NOTES OR NUMBS.
01900		X=P(3)
02000		IF(PL(3).EQ.1)GO TO 1
02100		X=IFIX(X)
02200	C  FOR RAND NOTES TO PRINT OUT FREQS.
02300		X=30.8677*2**(X/12)
02400	C  X=FREQ. IN HZ. BASED ON NOTE # IN P3.
02500		PL(3)=1.
02600	C  THIS CAUSES FREQ. NUM TO PRINT INSTEAD OF LITERAL CHARACTERS.
02700	1	P(3)=X*2**(P(11)/P(12))
02800	C  P12=# OF DIVISIONS OF THE OCTAVE.  P11=CHROMATIC STEP IN THAT DIV.
02900		RETURN
03000	
03100	30	IF(CNT(INUM).NE.1)GO TO 31
03200	C A, L AND INST NAMES ARE INITIIALIZED ON FIRST NOTE OF EACH INST.
03300		A(INUM)=0
03400		L(INUM)=1
03500		JINST(1,INUM)=INST(INUM)
03600		J=P(30)
03700		N=2
03800	C  J GETS INST # OF FIRST DUMMY, N IS COUNTER
03900		DO 32 K=J,J+2
04000	C USE 3 DUMMIES, NO MORE, NO LESS!!!
04100		JINST(N,INUM)=INST(K)
04200	32	N=N+1
04300	C PUT INST. NUM. OF 1ST DUMMY INTO P30.  PUT DUMMIES AT END OF INST LIST.
04400	C USE NEG. DURS. FOR DUMMIES.
04500	 
04600	31	IF(A(INUM).GT.P(1))L(INUM)=L(INUM)+1
04700	C L CHANGES VALUE IF THERE IS A TIME OVERLAP
04800	
04900		IF(L(INUM).GT.4)L(INUM)=1
05000	C  RESET L IF IT GETS TOO BIG
05100	
05200		A(INUM)=P(1)+P(2)*DF
05300	C  STORES END POINT IN TIME OF CURRENT NOTE.
05400	
05500		INST(INUM)=JINST(L(INUM),INUM)
05600	C  THIS SET INST NAME FOR EVERY NOTE.
05700	
05800		END
05900	
06000